package com.yfeng.security.servlet;
//package com.web.core.security.servlet;
//
//import java.awt.Color;
//import java.awt.Font;
//import java.awt.Graphics2D;
//import java.awt.image.BufferedImage;
//import java.util.Random;
//
//import javax.imageio.ImageIO;
//import javax.servlet.ServletException;
//import javax.servlet.ServletOutputStream;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//
///**
// * 鐢熸垚闅忔満楠岃瘉鐮�
// *
// * @author bitiliu
// */
//public class ValidateCodeServlet extends HttpServlet {
//
//    private static final long serialVersionUID = 1L;
//
//    // 楠岃瘉鐮佸浘鐗囩殑瀹藉害銆�
//    private int width = 10;
//
//    // 楠岃瘉鐮佸浘鐗囩殑楂樺害銆�
//    private int height = 1;
//     
//    // 楠岃瘉鐮佸瓧绗︿釜鏁�
//    private int codeCount = 3;
//
//    private int x = 0;
//
//    // 瀛椾綋楂樺害
//    private int fontHeight;
//
//    private int codeY;
//
//    char[] codeSequence = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
//            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
//            'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
//
//    /**
//     * 鍒濆鍖栭獙璇佸浘鐗囧睘鎬�
//     */
//    public void init() throws ServletException {
//        // 浠巜eb.xml涓幏鍙栧垵濮嬩俊鎭�
//        // 瀹藉害
//        String strWidth = this.getInitParameter("width");
//        // 楂樺害
//        String strHeight = this.getInitParameter("height");
//        // 瀛楃涓暟
//        String strCodeCount = this.getInitParameter("codeCount");
//
//        // 灏嗛厤缃殑淇℃伅杞崲鎴愭暟鍊�
//        try {
//            if (strWidth != null && strWidth.length() != 0) {
//                width = Integer.parseInt(strWidth);
//            }
//            if (strHeight != null && strHeight.length() != 0) {
//                height = Integer.parseInt(strHeight);
//            }
//            if (strCodeCount != null && strCodeCount.length() != 0) {
//                codeCount = Integer.parseInt(strCodeCount);
//            }
//        } catch (NumberFormatException e) {
//        }
//
//        x = width / (codeCount + 1);
//        fontHeight = height - 2;
//        codeY = height - 4;
//
//    }
//
//    protected void service(HttpServletRequest req, HttpServletResponse resp)
//            throws ServletException, java.io.IOException {
//
//        // 灏嗗洓浣嶆暟瀛楃殑楠岃瘉鐮佷繚瀛樺埌Session涓�
//        HttpSession session = req.getSession();
//        String[] codes = (String[]) session.getAttribute("validateCode");
//        // 瀹氫箟鍥惧儚buffer
//        BufferedImage buffImg = new BufferedImage(width, height,
//                BufferedImage.TYPE_INT_RGB);
//        Graphics2D g = buffImg.createGraphics();
//
//        // 鍒涘缓涓�釜闅忔満鏁扮敓鎴愬櫒绫�
//        Random random = new Random();
//
//        // 灏嗗浘鍍忓～鍏呬负鐧借壊
//        g.setColor(Color.WHITE);
//        g.fillRect(0, 0, width, height);
//
//        // 鍒涘缓瀛椾綋锛屽瓧浣撶殑澶у皬搴旇鏍规嵁鍥剧墖鐨勯珮搴︽潵瀹氥�
//        Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);
//        // 璁剧疆瀛椾綋銆�
//        g.setFont(font);
//
//        // 鐢昏竟妗嗐�
//        g.setColor(Color.BLACK);
//        g.drawRect(0, 0, width - 1, height - 1);
//
//        // 闅忔満浜х敓20鏉″共鎵扮嚎锛屼娇鍥捐薄涓殑璁よ瘉鐮佷笉鏄撹鍏跺畠绋嬪簭鎺㈡祴鍒般�
//        g.setColor(Color.BLACK);
//        for (int i = 0; i < 20; i++) {
//            int x = random.nextInt(width);
//            int y = random.nextInt(height);
//            int xl = random.nextInt(12);
//            int yl = random.nextInt(12);
//            g.drawLine(x, y, x + xl, y + yl);
//        }
//
//        // randomCode鐢ㄤ簬淇濆瓨闅忔満浜х敓鐨勯獙璇佺爜锛屼互渚跨敤鎴风櫥褰曞悗杩涜楠岃瘉銆�
//        StringBuffer randomCode = new StringBuffer();
//        int red = 0, green = 0, blue = 0;
//
//        // 闅忔満浜х敓codeCount鏁板瓧鐨勯獙璇佺爜銆�
//        for (int i = 0; i < codes.length; i++) {
//            // 寰楀埌闅忔満浜х敓鐨勯獙璇佺爜鏁板瓧銆�
//            //String strRand = String.valueOf(codeSequence[random.nextInt(36)]);
//            // 浜х敓闅忔満鐨勯鑹插垎閲忔潵鏋勯�棰滆壊鍊硷紝杩欐牱杈撳嚭鐨勬瘡浣嶆暟瀛楃殑棰滆壊鍊奸兘灏嗕笉鍚屻�
//            red = random.nextInt(255);
//            green = random.nextInt(255);
//            blue = random.nextInt(255);
//
//            // 鐢ㄩ殢鏈轰骇鐢熺殑棰滆壊灏嗛獙璇佺爜缁樺埗鍒板浘鍍忎腑銆�
//            g.setColor(new Color(red, green, blue));
//            g.drawString(codes[i], (i + 1) * x, codeY);
//
//            // 灏嗕骇鐢熺殑鍥涗釜闅忔満鏁扮粍鍚堝湪涓�捣銆�
//            randomCode.append(codes[i]);
//        }
//
//
//        // 绂佹鍥惧儚缂撳瓨銆�
//        resp.setHeader("Pragma", "no-cache");
//        resp.setHeader("Cache-Control", "no-cache");
//        resp.setDateHeader("Expires", 0);
//
//        resp.setContentType("image/jpeg");
//
//        // 灏嗗浘鍍忚緭鍑哄埌Servlet杈撳嚭娴佷腑銆�
//        ServletOutputStream sos = resp.getOutputStream();
//        ImageIO.write(buffImg, "jpeg", sos);
//
//        //session.setAttribute("validateCode", randomCode.toString().toLowerCase());
//
//
//        //System.out.println(randomCode.toString().toLowerCase()+"--"+session.getAttribute("validateCode").toString());
//        sos.close();
//    }
//
//}
